package transitarios;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

import transitarios.api.IGestaoClientes;
import transitarios.entidades.Cliente;


public class GestaoClientes implements IGestaoClientes, Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Map<String, Cliente> clientes;// Lista de todos os clientes

 

	public GestaoClientes(Map<String, Cliente> clientes) {
		this.clientes = clientes;
	}

	public GestaoClientes() {
		this.clientes = new TreeMap<String, Cliente>();
	}
 
	/**
	 * @return the gestaoClientes
	 */
	@Override
	public Map<String, Cliente> getClientes() {
		return clientes;
	}

	/**
	 * @param clientes
	 *            the gestaoClientes to set
	 */
	@Override
	public void setClientes(Map<String, Cliente> clientes) {
		this.clientes = clientes;
	}

	@Override
	public void adiciona(Cliente entidade) {
		this.clientes.put(entidade.getCodigo(), entidade);

	}

	@Override
	public void remove(String codigo) {
		this.clientes.remove(codigo);

	}

	@Override
	public void remove(Cliente entidade) {

		this.clientes.remove(entidade.getCodigo());

	}

	@Override
	public List<Cliente> devolveTodos() {

		return new ArrayList<Cliente>(this.clientes.values());
	}

	@Override
	public Cliente devolve(String codigo) {
	
		return this.clientes.get(codigo);
	}

	@Override
	public boolean existe(String codigo) {
		return (this.clientes.get(codigo) == null ? false : true);
	}

	@Override
	public boolean existe(Cliente p) {

		return (this.clientes.get(p.getCodigo()) == null ? false : true);
	}

	@Override
	public int contagem() {

		return this.clientes.size();
	}

}
